package net.jueb.protoServer.portService;
import net.jueb.protoServer.protocol.PortProtocol;
import io.netty.channel.Channel;

/**
 * 每个端口服务器应该id唯一,名称唯一,端口唯一
 * 该端口服务维护着所有控制器的实例和分发器实例，这些实例在该端口的请求处理线程中被共享使用。
 * @author Administrator
 *
 */
public abstract class TcpPortService<R> extends PortService<R>{

	public TcpPortService(int port, String portServiceName,PortProtocol<R> portProtocol) {
		super(port, portServiceName, portProtocol);
	}

	@Override
	public final PortType getPortType() {
		return PortType.TCP;
	}
	
	/**
	 * 根据绑定的端口管道状态确定是否运行。
	 * @return
	 */
	@Override
	public final boolean isRunning()
	{
		Channel channel=getBindChannel();
		return channel!=null && channel.isActive() && channel.isOpen();
	}
}
